home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / cw15 / tpw15.z / WBROWSE.TPW < prev    next >
Text File  |  1995-08-24  |  18KB  |  397 lines

  1. #UTILITY(BrowseWizard,'Create a new record browsing procedure'),WIZARD
  2. #!
  3. #SHEET
  4.   #TAB('Browse Wizard')
  5.     #IMAGE('ROLBRWS.BMP')
  6.     #DISPLAY('This wizard will help you quickly create a new record browsing (Browse) procedure.'),AT(90,8,235,24)
  7.     #DISPLAY('To begin creating your new Browse procedure, click Next.'),AT(90)
  8.   #ENDTAB
  9.   #TAB('Browse Wizard - Procedure Name'),WHERE(~%QuickProcedure)
  10.     #IMAGE('CMPBRWS.BMP')
  11.     #PROMPT('What name should be used as the label of this browse procedure?',@S100),%QuickBrowsePromptProcedureName,AT(90,23,235),PROMPTAT(90,8,235)
  12.     #VALIDATE(%QuickBrowsePromptProcedureName,'You must supply a procedure name!')
  13.   #ENDTAB
  14.   #TAB('Browse Wizard - File Access'),FINISH(1)
  15.     #IMAGE('WINBRWS1.BMP')
  16.     #PROMPT('Which file do you want to browse?',FILE),%QuickBrowsePromptPrimaryFile,AT(90,23,235),PROMPTAT(90,8,235)
  17.     #VALIDATE(%QuickBrowsePromptPrimaryFile,'You must supply a file to browse!')
  18.   #ENDTAB
  19.   #TAB('Browse Wizard - Key Sequence'),FINISH(1)
  20.     #IMAGE('WINBRWS2.BMP')
  21.     #DISPLAY('You can browse a file using a single record key or you can use all of the record keys declared for a file.'),AT(90,8,235,20)
  22.     #DISPLAY('If you use all the keys, they will be placed on tab controls that change the sequence of records displayed in the list box.'),AT(90,,235,20)
  23.     #PROMPT('&Browse using all record keys',CHECK),%QuickBrowsePromptKeyAccess,AT(90,,180),DEFAULT(1)
  24.     #ENABLE(%QuickBrowsePromptKeyAccess = %False),CLEAR
  25.       #PROMPT('&Access Key:',KEY(%QuickBrowsePromptPrimaryFile)),%QuickBrowsePromptPrimaryKey,PROMPTAT(90),AT(200,,125)
  26.       #VALIDATE(%QuickBrowsePromptPrimaryKey,'You must supply a key to use to access the file!')
  27.     #ENDENABLE
  28.   #ENDTAB
  29.   #TAB('Browse Wizard - Update Procedure'),FINISH(1)
  30.     #IMAGE('WINBRWS3.BMP')
  31.     #DISPLAY('The browse procedure can select a record to be processed by an update procedure.  If you enter an update procedure, "Insert", "Change", and "Delete" buttons will be placed in the browse window.'),AT(90,8,235,24)
  32.     #PROMPT('A&llow the user to update records',CHECK),%QuickBrowsePromptAllowUpdate,AT(90,,180,14),DEFAULT(1)
  33.     #DISPLAY('You may use the default update procedure name, or you may specify your own procedure name.  To use the default name, leave the Update Procedure blank.'),AT(90,,235,24)
  34.     #ENABLE(%QuickBrowsePromptAllowUpdate)
  35.       #PROMPT('&Update Procedure:',@S100),%QuickBrowsePromptUpdateProcedure,PROMPTAT(90),AT(200,,125)
  36.     #ENDENABLE
  37.   #ENDTAB
  38.   #TAB('Browse Wizard - Call Update Procedure'),WHERE(%QuickBrowsePromptAllowUpdate),FINISH(1)
  39.     #IMAGE('WINBRWS4.BMP')
  40.     #DISPLAY('Now that you''ve specified an update procedure, you might want your users to be able to call the update by clicking the right mouse button on a list box item, rather than using the edit buttons alone.'),AT(90,8,235,24)
  41.     #PROMPT('&Call update using popup menu',CHECK),%QuickBrowsePromptUpdatePopupMenu,AT(90,,180),DEFAULT(1)
  42.   #ENDTAB
  43.   #TAB('Browse Wizard - Child Files'),FINISH(1)
  44.     #IMAGE('WINBRWS5.BMP')
  45.     #DISPLAY('If this browse has one to many relations with any other files in the data dictionary, buttons can be provided to access the child files.'),AT(90,8,235,24)
  46.     #PROMPT('&Provide buttons for child files',CHECK),%QuickBrowsePromptChildHandling,DEFAULT(1),AT(90,,180)
  47.   #ENDTAB
  48.   #TAB('Browse Wizard - Parent File Handling'),WHERE(%QuickBrowsePromptKeyAccess = %False),FINISH(1)
  49.     #IMAGE('WINBRWS.BMP')
  50.     #DISPLAY('If the Record Key that you specified to use as the Access Key is the key used in a Many:1 relation, (In other words, this file is a child of another file) how do you want the selection of the parent record to take place?'),AT(90,8,235,24)
  51.     #PROMPT('&Parent Record Selection:',OPTION),%QuickBrowsePromptParentHandling,DEFAULT('Select parent record via button'),AT(90,40,235)
  52.     #PROMPT('Do not select by parent record',RADIO),AT(100,,140)
  53.     #PROMPT('Select parent record via button',RADIO),AT(100,,140)
  54.     #PROMPT('Assume that the parent record is active',RADIO),AT(100,,140)
  55.   #ENDTAB
  56.   #TAB('Browse Wizard - Select Button'),FINISH(1)
  57.     #IMAGE('WINBRWS6.BMP')
  58.     #DISPLAY('A browse procedure can be used to lookup a record for an entry field.  If used for this purpose, the browse window should include a "Select" button.'),AT(90,8,235,24)
  59.     #PROMPT('&Provide a "Select" button',CHECK),%QuickBrowsePromptSelectButton,DEFAULT(1),AT(90,,180)
  60.   #ENDTAB
  61.   #TAB('Browse Wizard - Finally...')
  62.     #IMAGE('CMPBRWS.BMP')
  63.     #DISPLAY('If you are creating new procedures with names that already exist in your application, the old procedures can be overwritten or the new procedures can be suppressed.'),AT(90,8,235,24)
  64.     #PROMPT('Overwrite existing procedures',CHECK),%QuickBrowsePromptOverwriteAll,AT(90,,235),DEFAULT(0)
  65.     #IMAGE('<255,1,4,127>'),AT(90,55)
  66.     #DISPLAY('The browse procedure will always be overwritten by the browse wizard!'),AT(125,54,200,20)
  67.   #ENDTAB
  68. #ENDSHEET
  69. #!
  70. #INSERT(%DeclareSymbols)
  71. #!
  72. #IF(%QuickProcedure)
  73.   #SET(%ValueConstruct,%QuickProcedure)
  74. #ELSE
  75.   #SET(%ValueConstruct,%QuickBrowsePromptProcedureName)
  76. #ENDIF
  77. #SET(%ReplaceExistingProcedures,%QuickBrowsePromptOverwriteAll)
  78. #ADD(%ProcedureList,%ValueConstruct)
  79. #SET(%QuickProcedurePrimary,%QuickBrowsePromptPrimaryFile)
  80. #SET(%QuickProcedureType,'Clarion Browse')
  81. #SET(%QuickProcedureDescription,'Browse the ' & %QuickProcedurePrimary & ' File')
  82. #SET(%QuickProcedurePrimaryKey,%QuickBrowsePromptPrimaryKey)
  83. #SET(%QuickProcedureWindow,%True)
  84. #IF(%QuickBrowsePromptAllowUpdate)
  85.   #IF(%QuickBrowsePromptUpdateProcedure)
  86.     #SET(%QuickBrowseUpdateProcedure,%QuickBrowsePromptUpdateProcedure)
  87.   #ELSE
  88.     #SET(%QuickBrowseUpdateProcedure,'Update' & %QuickProcedurePrimary)
  89.   #ENDIF
  90. #ENDIF
  91. #SET(%QuickBrowseUpdatePopupMenu,%QuickBrowsePromptUpdatePopupMenu)
  92. #SET(%QuickBrowseChildHandling,%QuickBrowsePromptChildHandling)
  93. #SET(%QuickBrowseParentHandling,%QuickBrowsePromptParentHandling)
  94. #SET(%QuickBrowseSelectButton,%QuickBrowsePromptSelectButton)
  95. #!
  96. #!
  97. #INSERT(%GenerateProcedures)
  98. #!
  99. #!-------------------------------------------------------------
  100. #GROUP(%QuickBrowseDeclarations)
  101. #DECLARE(%QuickBrowseUpdateProcedure,%ProcedureList)
  102. #DECLARE(%QuickBrowseUpdatePopupMenu,%ProcedureList)
  103. #DECLARE(%QuickBrowseCreateUpdate,%ProcedureList)
  104. #DECLARE(%QuickBrowseChildHandling,%ProcedureList)
  105. #DECLARE(%QuickBrowseParentHandling,%ProcedureList)
  106. #DECLARE(%QuickBrowseSelectButton,%ProcedureList)
  107. #!
  108. #DECLARE(%PrimaryBrowseInstance)
  109. #DECLARE(%WorksheetLowerEdge)
  110. #DECLARE(%WorksheetUpperEdge)
  111. #!--------------------------------------------------------
  112. #GROUP(%ConstructQuickBrowse)
  113. #MESSAGE('Determining Secondary Procedures',3)
  114. #CASE(%QuickProcedureDefault)
  115. #OF('Primary Browse')
  116.   #INSERT(%PrimaryBrowseDefaults)
  117. #OF('Secondary Browse')
  118.   #INSERT(%SecondaryBrowseDefaults)
  119. #OF('Select Browse')
  120.   #INSERT(%SelectBrowseDefaults)
  121. #ENDCASE
  122. #IF(%QuickBrowseChildHandling)
  123.   #FIX(%File,%QuickProcedurePrimary)
  124.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  125.     #IF(%FileKey AND %RelationKey)
  126.       #SET(%ValueConstruct,%Relation)
  127.       #INSERT(%AddSecondaryBrowse,%RelationKey)
  128.       #FIX(%File,%QuickProcedurePrimary)
  129.       #FIX(%Relation,%ValueConstruct)
  130.       #FIX(%ProcedureList,%CurrentProcedure)
  131.     #ENDIF
  132.   #ENDFOR
  133. #ENDIF
  134. #FIX(%ProcedureList,%CurrentProcedure)
  135. #FIX(%File,%QuickProcedurePrimary)
  136. #IF(%QuickBrowseParentHandling = 'Select parent record via button')
  137.   #FOR(%Relation),WHERE(%FileRelationType='MANY:1')
  138.     #IF(%QuickProcedurePrimaryKey AND %FileKey <> %QuickProcedurePrimaryKey)
  139.       #CYCLE
  140.     #ELSIF(NOT %FileKey)
  141.       #CYCLE
  142.     #ENDIF
  143.     #SET(%ValueConstruct,%Relation)
  144.     #INSERT(%AddSelectBrowse,%Relation)
  145.     #FIX(%File,%QuickProcedurePrimary)
  146.     #FIX(%Relation,%ValueConstruct)
  147.     #FIX(%ProcedureList,%CurrentProcedure)
  148.   #ENDFOR
  149. #ENDIF
  150. #FIX(%ProcedureList,%CurrentProcedure)
  151. #IF(%QuickBrowseUpdateProcedure)
  152.   #INSERT(%AddUpdateProcedure,%QuickProcedurePrimary,%QuickBrowseUpdateProcedure)
  153.   #FIX(%ProcedureList,%CurrentProcedure)
  154. #ENDIF
  155. #ADD(%ProcedureDataItemID,ITEMS(%ProcedureDataItemID)+1)
  156. #SET(%ProcedureDataItem,'CurrentTab')
  157. #SET(%ProcedureDataItemType,'STRING(80)')
  158. #MESSAGE('Determining Window Size',3)
  159. #ADD(%WindowLayerID,%LayerPreSheet)
  160. #FIX(%ProcedureList,%CurrentProcedure)
  161. #SET(%WorksheetHeight,%MaximumSheetHeight)
  162. #SET(%WorksheetWidth,0)
  163. #FIX(%FileList,%QuickProcedurePrimary)
  164. #INSERT(%QuickSetBrowseBox,%QuickProcedurePrimary,1,%QuickProcedurePrimaryKey)
  165. #SET(%PrimaryBrowseInstance,%QuickTemplateInstance)
  166. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  167. #SET(%WindowControl,%QuickTemplateControl)
  168. #SET(%WindowControlXOffset,2 * %DefaultXOffset)
  169. #SET(%WindowControlYOffset,2 * %DefaultYOffset)
  170. #IF(%QuickBrowseUpdateProcedure)
  171.   #SET(%WorksheetWidth,%WorksheetWidth + (3 * %DefaultButtonWidth) + (4 * %DefaultXOffset))
  172. #ENDIF
  173. #IF(%QuickBrowseSelectButton)
  174.   #SET(%WorksheetWidth,%WorksheetWidth + %DefaultButtonWidth + %DefaultXOffset)
  175. #ENDIF
  176. #IF(%QuickBrowseParentHandling = 'Select parent record via button' AND %QBBParentFound)
  177.   #SET(%WorksheetWidth,%WorksheetWidth + %DefaultButtonWidth + %DefaultXOffset)
  178. #ENDIF
  179. #IF(%WorksheetWidth)
  180.   #SET(%WindowControlHeight,%WorksheetHeight - ((3 * %DefaultYOffset) + %DefaultButtonHeight))
  181. #ELSE
  182.   #SET(%WindowControlHeight,%WorksheetHeight - %DefaultYOffset)
  183. #ENDIF
  184. #IF(%QBBWidth > %WorksheetWidth)
  185.   #SET(%WorksheetWidth,%QBBWidth)
  186. #ENDIF
  187. #IF(%WorksheetWidth > %MaximumSheetWidth)
  188.   #SET(%WorksheetWidth,%MaximumSheetWidth)
  189. #ELSIF(%WorksheetWidth < %MinimumsheetWidth)
  190.   #SET(%WorksheetWidth,%MinimumSheetWidth)
  191. #ENDIF
  192. #SET(%WindowControlWidth,%WorksheetWidth - (2 * %DefaultYOffset))
  193. #FREE(%RelationList)
  194. #SET(%RelationRows,0)
  195. #SET(%RelationCols,0)
  196. #IF(%QuickBrowseChildHandling)
  197.   #FIX(%File,%QuickProcedurePrimary)
  198.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  199.     #IF(%FileKey AND %RelationKey)
  200.       #ADD(%Relationlist,%Relation)
  201.       #SET(%RelationCols,%RelationCols + 1)
  202.       #IF(%RelationCols = %MaximumRelationCols)
  203.         #SET(%RelationCols,0)
  204.       #ENDIF
  205.       #IF(%RelationCols = 0)
  206.         #SET(%RelationRows,%RelationRows + 1)
  207.       #ENDIF
  208.     #ENDIF
  209.   #ENDFOR
  210. #ENDIF
  211. #SET(%WindowWidth,%WorksheetWidth + (2 * %DefaultXOffset))
  212. #SET(%WindowHeight,%WorksheetHeight + (3 * %DefaultYOffset) + %DefaultButtonHeight)
  213. #IF(%RelationRows AND NOT %RelationCols)
  214.   #SET(%RelationRows,%RelationRows-1)
  215.   #SET(%RelationCols,4)
  216. #ENDIF
  217. #IF(%RelationRows)
  218.   #SET(%WindowHeight,%WindowHeight + (%RelationRows * (%DefaultYOffset + %DefaultButtonHeight)))
  219.   #SET(%ValueConstruct,6)
  220. #ELSE
  221.   #SET(%ValueConstruct,%RelationCols + 2)
  222. #ENDIF
  223. #SET(%HoldConstruct,(%ValueConstruct * %DefaultButtonWidth) + ((%ValueConstruct + 1) * %DefaultXOffset))
  224. #IF(%HoldConstruct > %WindowWidth)
  225.   #SET(%ValueConstruct,%HoldConstruct - %WindowWidth)
  226.   #SET(%WindowWidth,%HoldConstruct)
  227.   #SET(%WorksheetWidth,%WindowWidth - (2 * %DefaultYOffset))
  228.   #SET(%WindowControlWidth,%WorksheetWidth - (2 * %DefaultYOffset))
  229. #ENDIF
  230. #SET(%ValueConstruct,0)
  231. #IF(%QuickBrowseUpdateProcedure)
  232.   #SET(%ValueConstruct,3)
  233. #ENDIF
  234. #IF(%QuickBrowseSelectButton)
  235.   #SET(%ValueConstruct,%ValueConstruct + 1)
  236. #ENDIF
  237. #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  238. #SET(%CurrentX,(%WindowControlXOffset + %WindowControlWidth) - ((%ValueConstruct * %DefaultButtonWidth) + ((%ValueConstruct - 1) * %DefaultXOffset)))
  239. #SET(%CurrentY,%WindowControlYOffset + %WindowControlHeight + %DefaultYOffset)
  240. #IF(%QuickBrowseSelectButton)
  241.   #INSERT(%QuickSetBrowseSelectButton)
  242.   #SELECT(%QuickTemplateControl,1)
  243.   #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  244.   #SET(%WindowControl,%QuickTemplateControl)
  245.   #SET(%WindowControlXOffset,%CurrentX)
  246.   #SET(%WindowControlYOffset,%CurrentY)
  247.   #SET(%WindowControlHeight,%DefaultButtonHeight)
  248.   #SET(%WindowControlWidth,%DefaultButtonWidth)
  249.   #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  250. #ENDIF
  251. #IF(%QuickBrowseUpdateProcedure)
  252.   #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  253.   #INSERT(%QuickSetBrowseUpdateButton,%QuickBrowseUpdateProcedure,%QuickBrowseUpdatePopupMenu,%True)
  254.   #FOR(%QuickTemplateControl)
  255.     #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  256.     #SET(%WindowControl,%QuickTemplateControl)
  257.     #SET(%WindowControlXOffset,%CurrentX)
  258.     #SET(%WindowControlYOffset,%CurrentY)
  259.     #SET(%WindowControlHeight,%DefaultButtonHeight)
  260.     #SET(%WindowControlWidth,%DefaultButtonWidth)
  261.     #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  262.   #ENDFOR
  263. #ENDIF
  264. #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  265. #IF(ITEMS(%QBBKeyList))
  266.   #FOR(%QBBKeyList)
  267.     #FIX(%KeyListID,%QBBKeyListID)
  268.     #ADD(%WindowLayerID,ITEMS(%WindowLayerID)+1)
  269.     #SET(%WindowLayerTabText,%KeyListTab)
  270.     #SET(%CurrentY,%WorksheetHeight - %DefaultButtonHeight)
  271.     #IF(%QuickBrowseParentHandling = 'Select parent record via button')
  272.       #IF(%QBBRangeFile)
  273.         #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  274.         #SET(%WindowControl,'?Select' & %QBBRangeFile)
  275.         #SET(%ValueConstruct,%WorksheetWidth - (2 * %DefaultXOffset))
  276.         #IF(%QuickBrowseSelectButton)
  277.           #SET(%ValueConstruct,%ValueConstruct - (%DefaultXOffset + %DefaultButtonWidth))
  278.         #ENDIF
  279.         #IF(%QuickBrowseUpdateProcedure)
  280.           #SET(%ValueConstruct,%ValueConstruct - (3 * (%DefaultXOffset + %DefaultButtonWidth)))
  281.         #ENDIF
  282.         #IF(%ValueConstruct > (2 * %DefaultButtonWidth) + %DefaultXOffset)
  283.           #SET(%ValueConstruct,'Select ' & %QBBRangeFile)
  284.           #SET(%WindowControlWidth,(2 * %DefaultButtonWidth) + %DefaultXOffset)
  285.         #ELSE
  286.           #IF(LEN(%QBBRangeFile) > 12)
  287.             #SET(%ValueConstruct,SUB(%QBBRangeFile,1,9) & '...')
  288.           #ELSE
  289.             #SET(%ValueConstruct,%QBBRangeFile)
  290.           #ENDIF
  291.           #SET(%WindowControlWidth,%DefaultButtonWidth)
  292.         #ENDIF
  293.         #SET(%WindowControlStatement,'BUTTON(''' & %ValueConstruct & ''')')
  294.         #SET(%WindowControlXOffset,2 * %DefaultXOffset)
  295.         #SET(%WindowControlYOffset,%CurrentY)
  296.         #SET(%WindowControlHeight,%DefaultButtonHeight)
  297.         #ADD(%ButtonControlID,ITEMS(%ButtonControlID)+1)
  298.         #SET(%ButtonControl,%WindowControl)
  299.         #SET(%ButtonAction,'Call a Procedure')
  300.         #SET(%ButtonProcedure,'Select' & %QBBRangeFile)
  301.         #SET(%ButtonThread,'0')
  302.         #SET(%ButtonThreadStack,'025000')
  303.         #SET(%ButtonRequest,'Select')
  304.       #ENDIF
  305.     #ENDIF
  306.   #ENDFOR
  307. #ELSE
  308.   #ADD(%WindowLayerID,ITEMS(%WindowLayerID)+1)
  309.   #SET(%WindowLayerTabText,'Record Order')
  310. #ENDIF
  311. #SET(%TabLineCount,1)
  312. #SET(%CurrentTabLineLength,0)
  313. #SET(%CurrentTabLength,0)
  314. #FOR(%WindowLayerID)
  315.   #IF(INSTRING('&',%WindowLayerTabText,1,1))
  316.     #SET(%CurrentTabLength,(LEN(%WindowLayerTabText) * 4))
  317.   #ELSE
  318.     #SET(%CurrentTabLength,((LEN(%WindowLayerTabText) - 1) * 4))
  319.   #ENDIF
  320.   #IF(%CurrentTabLength < %MinimumTabLength)
  321.     #SET(%CurrentTabLength,%MinimumTabLength)
  322.   #ENDIF
  323.   #SET(%CurrentTabLength,%CurrentTabLength + %TabTextOffset)
  324.   #IF((%CurrentTabLength + %CurrentTabLineLength) > %WorksheetWidth)
  325.     #SET(%TabLineCount,%TabLineCount + 1)
  326.     #SET(%CurrentTabLineLength,%CurrentTabLength)
  327.   #ELSE
  328.     #SET(%CurrentTabLineLength,%CurrentTabLineLength + %CurrentTabLength)
  329.   #ENDIF
  330.   #IF(%WindowLayerTopOffset > %MaximumTopOffset)
  331.     #SET(%MaximumTopOffset,%WindowLayerTopOffset)
  332.   #ENDIF
  333. #ENDFOR
  334. #SET(%InitialSheetYOffset,(%TabLineVerticalOffset * %TabLineCount) + %TabDefaultVerticalOffset)
  335. #SET(%WorksheetHeight,%MaximumSheetHeight + %InitialSheetYOffset)
  336. #FOR(%WindowLayerID)
  337.   #FOR(%WindowControlID)
  338.     #SET(%WindowControlYOffset,%WindowControlYOffset + %InitialSheetYOffset)
  339.   #ENDFOR
  340. #ENDFOR
  341. #SET(%ValueConstruct,%WorkSheetHeight - %MaximumSheetHeight)
  342. #SET(%WindowHeight,%WindowHeight + %ValueConstruct)
  343. #ADD(%WindowLayerID,%LayerWindow)
  344. #SET(%CurrentY,%WindowHeight - (%DefaultYOffset + %DefaultButtonHeight))
  345. #SET(%CurrentX,%DefaultXOffset)
  346. #FIX(%FileList,%QuickProcedurePrimary)
  347. #IF(ITEMS(%RelationList))
  348.   #SET(%CurrentY,%CurrentY - (%RelationRows * ((%DefaultYOffset + %DefaultButtonHeight))))
  349.   #FOR(%RelationList)
  350.     #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  351.     #SET(%WindowControl,'?Browse' & %RelationList)
  352.     #IF(LEN(%RelationList) > 12)
  353.       #SET(%ValueConstruct,SUB(%RelationList,1,9) & '...')
  354.     #ELSE
  355.       #SET(%ValueConstruct,%RelationList)
  356.     #ENDIF
  357.     #SET(%WindowControlStatement,'BUTTON(''' & %ValueConstruct & ''')')
  358.     #SET(%WindowControlXOffset,%CurrentX)
  359.     #SET(%WindowControlYOffset,%CurrentY)
  360.     #SET(%WindowControlHeight,%DefaultButtonHeight)
  361.     #SET(%WindowControlWidth,%DefaultButtonWidth)
  362.     #ADD(%ButtonControlID,ITEMS(%ButtonControlID)+1)
  363.     #SET(%ButtonControl,%WindowControl)
  364.     #SET(%ButtonAction,'Call a Procedure')
  365.     #FIX(%Relation,%RelationList)
  366.     #SET(%ButtonProcedure,'Browse' & %RelationKey)
  367.     #SET(%ButtonThread,'0')
  368.     #SET(%ButtonThreadStack,'025000')
  369.     #SET(%RelationCols,%RelationCols - 1)
  370.     #IF(%RelationCols = 0)
  371.       #SET(%CurrentY,%CurrentY + %DefaultYOffset + %DefaultButtonHeight)
  372.       #SET(%CurrentX,%DefaultXOffset)
  373.       #SET(%RelationCols,4)
  374.     #ELSE
  375.       #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  376.     #ENDIF
  377.   #ENDFOR
  378. #ENDIF
  379. #SET(%CurrentX,%WindowWidth - (2 * (%DefaultXOffset + %DefaultButtonWidth)))
  380. #SET(%CurrentY,%WindowHeight - (%DefaultButtonHeight + %DefaultYOffset))
  381. #INSERT(%QuickSetCloseButton)
  382. #SELECT(%QuickTemplateControl,1)
  383. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  384. #SET(%WindowControl,%QuickTemplateControl)
  385. #SET(%WindowControlXOffset,%CurrentX)
  386. #SET(%WindowControlYOffset,%CurrentY)
  387. #SET(%WindowControlHeight,%DefaultButtonHeight)
  388. #SET(%WindowControlWidth,%DefaultButtonWidth)
  389. #SET(%CurrentX,%CurrentX + %DefaultXOffset + %defaultButtonWidth)
  390. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  391. #SET(%WindowControl,'?Help')
  392. #SET(%WindowControlStatement,'BUTTON(''' & %DefaultHelpControlText & '''),STD(STD:Help)')
  393. #SET(%WindowControlXOffset,%CurrentX)
  394. #SET(%WindowControlYOffset,%CurrentY)
  395. #SET(%WindowControlHeight,%DefaultButtonHeight)
  396. #SET(%WindowControlWidth,%DefaultButtonWidth)
  397.